The present invention relates to automated systems and processes which are operated to manufacture goods or to generate services under the control of one or more digital computer systems. The invention also relates to digital computer operated systems which simulate system or process operations. The present invention further relates to digital computer systems which are used to monitor system apparatus and to act as a communications link between system apparatus and supervisory personnel. More particularly, the present invention is directed to systems which include apparatus connected to a digital computer system by an interface system and which further include provision for automatically establishing a system or process operating configuration through the use of automated computer programming techniques.
The use of digital computers in system monitoring and control has revolutionized the whole field of systems engineering. While solving many of the problems which faced systems designers of the past, computers have introduced a host of new problems for present day system designers. As will subsequently become more apparent herein, the present invention provides improved solutions to the more serious problems which face a system engineer when he employs a digital computer for monitor control purposes in a system to be operated for production or other end purposes.
In a typical industrial system, literally hundreds of monitoring and control functions may have to be carried out. In an electrical power generating system, for example, it may be necessary to monitor hundreds of signals generated by sensor components associated with the power generation apparatus and representing temperatures, pressures, voltages, currents, and other system parameters. It may also be necessary to supply control signals to motor driven valves, electrical controls, relays, motors, and other system control components.
Prior to development of the modern digital computer, monitoring and control equipment usually was constructed entirely from independent hardware components. For monitoring, system parameter sensing components were connected singly or in groups to visual display meters and to recording meters. For alarm monitoring, the signal outputs of system sensors were usually fed into alarm devices which could sound an alarm when a system parameter indicated a system abnormality. For automatic control, signals generated by one or more system parameter sensing components were connected by hardware controllers to system control components in one or more control loops, and the characteristics of the hardware controllers were adjusted to give the desired control action and system or process performance.
In control applications where the on/off control of apparatus depended only or primarily upon the status of system contacts or switches, customized digital logic circuits typically were constructed to accept as input signals a plurality of contact closure or switch input signals, to operate logically upon these input signals, and to generate contact closure output signals to control directly the system apparatus in accordance with the hardware logic. A typical system might have included a large number of logic circuits interconnected with the system apparatus and with each other to form a highly complex hardware director system.
A primary advantage of these hardware arrangements is their inflexibility. Once a hardware monitoring or control system is assembled, changes may only be made by shutting down the system and rewiring the hardware into a new configuration or by the addition of supplemental hardware. Another disadvantage of these hardware arrangements is the high cost of having a separate hardware device to carry out each monitoring and control function.
Both the inflexibility and the cost disadvantages of hardware arrangements may be overcome through the use of a digital computer, assuming there is a sufficient duty assignment of monitor and/or control functions to provide an economic justification for digital computer usage. Digital computers may be reprogrammed to handle changes in a system configuration. A single digital computer may be programmed to carry out a wide number of different control functions and thus has the potential to replace literally thousands of independent hardware devices with a single, compact unit. While digital computers are not typically as rapid in their operations as are some hardware devices, the vast majority of control applications do not require extremely high execution speeds.
In adapting a digital computer system to monitoring and control system applications, certain provisions are usually made in the structure of the computer system and in the programming or "software" which resides within the computer. With regard to the computer system structure, it is usually necessary to provide an input interface subsystem for the computer so that signals generated by sensors associated with system apparatus may be fed into the computer in the case of either a monitoring or a control system, and it is necessary to provide an output interface subsystem for the computer so that internally generated signals within the computer may be fed back to the system apparatus in the case of a control system. The input and output interface subsystems further provide operator and programmer interface through panelboard switches and through communication devices. It is also necessary to enable the computer to allow predefined external events to interrupt normal computer operations so that the computer may respond quickly to sudden changes in the system.
With regard to the program system or "software", the process control executive program differs from the conventional control or executive program of a general purpose computer particularly in that it includes a scheduling program or an executive scheduler which may accept real time bids for the execution of jobs or tasks and which then may execute the jobs or tasks in accordance with assigned priorities. A digital computer system which includes most or all of the provisions just considered may be called a process control computer system and is the type of computer system most related to the present invention. The term "process control computer system" as used herein is applicable to a computer that is used for monitoring system variables without actually controlling a system or process as well as to a computer that directly controls the apparatus used in the operation of a system or process.
Soon after digital computers were introduced into the fields of system monitoring and system control, it was found that the task of structuring a system for process operations under computer monitoring or control, i.e. the task of adapting a process control computer system to a particular plant system or the like, was one which often required many man-years of programming effort by skilled computer programmers. It was found that half the cost of a process control computer system often went into the production of programs which were custom-tailored to a particular system or process. With so large a proportion of the computer system cost going into programming, workers in the systems engineering field directed their efforts at an early date towards the development of techniques which enable automation of the programming of process control computer systems and the structuring of systems or processes into operational entities. A long-term objective of workers in this field is to enable instructions written out by a systems engineer who is not necessarily a skilled computer programmer to be quickly and efficiently converted into an operative set of computer programs which configure a monitoring/control system and the system or process it is associated with when the instructions are fed into a process control computer in the monitoring/control system.
The first efforts in the direction of automatic programming led to the development of what are now commonly called "fill-in-the-blank programming systems". These systems were originally developed to simplify the complicated process of generating programs to perform elaborate data monitoring tasks and were later extended so that the same basic approach could be used to implement simple control strategies, such as simple control feedback loops. A relatively thorough discussion of this type of system may be found in the article "Process Control Software" by Herbert E. Pike, Jr. which appears in the PROCEEDINGS OF THE IEEE, Volume 58, Number 1, published in January of 1970 beginning on page 87.
Perhaps the first such system is the PROSPRO/1800 system developed by the IBM Corporation. This system utilizes six coding forms which the systems engineer fills in to define the monitoring functions to be implemented in his system. The forms contain information such as monitored signal identifications, engineering units for signals (feet, pounds, volts, etc.), signal averaging and filtering characteristics, signal correction and linearizing data, and other information. Each set of forms defines how a particular incoming signal is to be scanned, processed, and stored within the computer system. In addition, these forms contain blanks into which alarm limiting values may be entered for each signal, for example, high and low limits beyond which the signal should not ordinarily fluctuate.
After the forms for signals which are to be monitored have been filled out, the information which they bear is punched into machine readable cards and fed into a process control computer system. A special processing program residing within the computer system converts the information presented by the punched cards into files of coded data. Each file defines how the monitoring of a particular incoming signal is to be carried out. The resulting files are stored away in the computer system and are periodically processed by other programs residing within the computer system. To summarize the PROSPRO/1800 programming system, a standard package of computer programs are used in conjunction with a set of coding forms to allow the speedy establishment of a monitoring system which is equipped to handle many routine signal monitoring and alarm tasks.
At a later time, when the use of digital computers for system control was becoming more widespread, IBM developed an expanded system called the PROSPRO II system. In addition to the type of coding forms used in the PROSPRO/1800 system, the PROSPRO II system includes an additional set of coding forms which allow moderately elaborate control loops to be established.
In the PROSPRO II system, any monitored variable may also be defined as a direct digital control variable by filling out an additional coding form. The data on the additional form allows the systems engineer to specify variable target values or setpoints, controller gains, controller integral (or reset) and derivative (or lead) characteristics, and other controller parameters of the type which are frequently encountered in common control situations. In addition, the PROSPRO II system provides coding forms which allow the implementation of general equations that may be used to carry out somewhat more complex control strategies.
A general action coding form allows the systems engineer to modify control actions in response to the status of the system, for example into account the status of system switches and relays and the relative magnitudes of signals derived from the system. The rigid format imposed upon all control actions by the structured coding forms which are a necessary part of the PROSPRO II system makes it somewhat difficult to achieve operating configurations which are in any way unusual or out of the ordinary. Provision is therefore made within the PROSPRO II system for the calling of conventional computer programs to handle the more unusual or special tasks. A general description of the PROSPRO II system may be found in the IBM Program Product Manual PROSPRO II (TSX/1800) Process Systems Programs Application Description Manual, Number GH20/0718/0 which may be obtained from the IBM Corporation, Poughkeepsie, New York.
A similar fill-in-the-blanks programming system has been developed by the General Electric Company and is called the BICEPS system. For each signal which is to be monitored, a BICEPS coding form is filled in with information defining the nature of the signal, how often it is to be scanned, and how its magnitude is to be computed by the computer system. This coding form allows the establishment of alarm limits and also includes provision for linearization and correction of each signal. The same coding form is used for both continuous or analog signals and for logical or "on-off" signals which are sometimes called digital signals or contact-closure signals.
If a control action is to be associated with a signal, information defining the control action is placed upon a second coding form for that signal. The second coding form includes control parameters such as setpoints and also includes the address of a controller output signal applied to the process or of a controller output applied as an intermediate variable to some other control element. For example, a control action associated with a first variable may be used to calculate a setpoint or target value for use in a control action associated with some other variable.
The two BICEPS coding forms provide for common monitoring and control functions. If any unusual action is desired, the action is defined by a BPL program that is written in a special language called the BPL language, a language quite similar to Fortran IV. As an example, such a BPL program may be called upon to compute the setpoint or target value for a control action. Each BPL program associated with a signal is given a number, and the numbers of the BPL programs are placed in appropriate locations upon the coding forms for that signal so that linkages may be later established between the automatically established BICEPS monitoring and control functions and the BPL program. The BICEPS coding forms allow a BPL program to be called upon whenever the magnitude of a signal exceeds or falls below certain predefined limits. A more detailed description of the BICEPS system may be found in a manual BICEPS Summary Manual/BICEPS Supervisory Control, number GET-3559A (6/69) which is available from the General Electric Company, Process Computer Department, Phoenix, Arizona.
As a variation upon the General Electric technique of having Fortran-like computer programs accompanying monitor and control action definitions into a computer system, a programming system called the BATCH sequencing system developed by the Foxboro Company includes a programming language each line of which is intended to correspond to a single block or element of a monitoring or control system. The first word on each line of programming is the name of a function which is to be carried out, and subsequent items on the same line are data values or the names of signals or variables which are required for the execution of the function. The BATCH programming language is not translated into executable machine code as is the BPL programming language described above. Each line of BATCH programming is translated into a data body that is stored within the computer system for later processing by an interpretive processing program. The data on each line of a BATCH programming statement must be carefully ordered, since the ordering of the data determines how the data is interpreted by the processing program. Only a limited number of functions are available to the BATCH programmer. A more detailed description of the BATCH sequencing system may be found in a document entitled "BATCH Sequencing System", Number TIM-R-97400A-5-4, 1968, which may be obtained from the Systems Division of the Foxboro Company, Foxboro Massachusetts.
A major drawback of most known fill-in-the-blank programming systems is that they represent only a part of the overall programming effort which is necessary to structure a system or process and its monitoring/process control system, and an isolated part at that. Separate program packages are required to handle other problems, such as nitricate computations which are required to implement a control strategy or to produce particular computer system outputs for desired process operations. These separate packages typically are prepared by computer programmers without the benefit of automatic programming techniques. In an adaptive control system of the type which automatically adjusts itself to changes in the nature of the process which is under control, for example, the programs used to adapt the control system to changing conditions typically are entirely separate from the monitoring and simple control function programs. Interaction between such isolated programs is difficult to achieve and often requires custom tailoring of the programs by skilled programmers having an intimate knowledge of where different parameters are stored within the computer system. The resultant monitoring or control systems are often somewhat disjoined, since completely free interaction between such isolated programs is not readily achieved. In order to obtain a desired software configuration with minimum effort, programmers often resort to special and often clever shortcut techniques and intricate program interacting devices which complicate the program system and make it extremely difficult for one who did not initially participate in the establishment of a program system to perceive exactly what that system is and to modify it at a later time.
Additional faults of present day computer controlled and/or monitored systems become apparent when one attempts to modify the monitoring or control functions in such a system after the system has once been placed in operation, i.e. to restructure or reconfigure the system or process and its computer. Consider first the problem of adding a new program to the conputer used in such a system. First, the new program is written out with instructions directed to achieve predetermined process or systems operating on monitoring purposes, typically in a programming language such as Fortran IV. Then a detailed map of the computer system memory allotment is usually checked to find a location where the new program may be stored within the computer system.
All system signals and variables which the new program has occasion to reference are located and their addresses are inserted into the new program so that they may be accessed. Calls for execution of the new program are then inserted manually into existing programs within the computer system. These calls and their equivalents may be called linkages between the existing programs and the new program. The insertion of such linkages into existing programs is typically accomplished by removing the existing programs from the computer system, recompiling or reassembling the existing programs to include the linkages to the new program, and reinserting the recompiled and reassembled programs into the computer system. If the reinsertion of a program into the computer system exceeds the storage space allocated to the program, then new storage space must be found for the modified programs as well as for the new program. It is usually necessary for an engineer attempting such a modification to have a detailed knowledge not only of the programs which reside within the computer system and of the signals and variables which are involved in the monitoring or control function, but also of the exact placement of all of these elements within the computer system.
If programs are to be deleted from an operating computer system in order to restructure the system or process and its computer, additional problems arise. If the memory space occupied by a program which is to be deleted is to be reused, the location of this space usually has to be determined and a record of the availability of this space has to be made. Preferably, all programs which have occasion to call for the execution of a program which is to be removed are located, and all linkages to the program being removed are deleted from the calling programs. Such a removal normally is accomplished by recompiling or reassembling and then reloading the calling programs. It is desirable to remove all such call linkages to keep the size of the calling programs as small as possible because space is usually at a premium within most process control computer systems. It is also desirable to remove all such calls so that the name or number which identifies a program that is removed may be reused to identify a program that is later added to the system and so that the later-entered program will not be placed into operation improperly by linkages which were not removed.
In prior art computer controlled or monitored systems, it is usually too difficult to remove all removable call linkages, and typically many are allowed to remain within the computer system, occupying valuable computer systems storage space and generally limiting the flexibility of the system or process and its computer system to accept additional modifications at a later time. The amount of editing which may be done upon such a system or process is limited to the number of programs which may be altered in the computer system without leaving the computer system so full of unused linkages and data segments that the system may not accept any more new programs or modifications.
Conventional processes or systems and their monitoring and control systems are commonly established by laying out all of the monitoring and control strategies in advance and by feeding the programs and data files which implement the strategies into the computer system before the system or process is initially placed into operation. Some such systems even require data files which contain signal and variable names to be fed into the computer system in alphanumeric order by name to facilitate locating variables and signals by name at a later time within the system. Conventional systems so not generally allow additional programs and data files to be inserted into a system after the initial loading of programs and data files unless room has been reserved for the programs or files when the original system configuration is established. Systems of this type are easily set up initially but may be modified only with considerable difficulty.
Another defect in conventional systems or processes and their computer systems is their inability to allow flexible interaction between monitoring and control jobs which are defined in different ways. In a typical process control computer system, monitoring functions and some control functions may be defined not by executable computer programs but by data file definitions of jobs which are processed or interpreted by executable processing programs on a regular basis. Other jobs are defined by conventional computer programs which are placed in execution by some form of executive scheduling program.
Provision is usually made for computer programs to interact with one another and for computer programs to be called upon by data file job definitions during monitoring and control operations to perform special tasks. However, different supervisory programs are provided for these different types of programming entities. The scheduler which controls program execution is separate from a first processing program which may interpret monitor data file job definitions and from a separate second processing program which may interpret control data file job definitions.
The presence of a number of separate software entities which control the execution of jobs defined in different ways not only increases the complexity of a program system but also makes it necessary for a system job wishing to cause the execution of another sytem job not only to know the identification of that other job but also to have a knowledge of which of three possible entities controls the execution of that job.
Even overlooking this defect, interaction between jobs defined in different ways is possible only on a limited basis. Typically, program control may not pass freely back and forth between conventional programs and data interpretive programs in both directions. As a direct result, the simplified programming techniques which are available for monitoring and for elementary control operations are typically not available to conventionally programmed sections of a computer system and are not called upon to aid conventional computer programs in carrying out various tasks.
Another limitation on present day production and other systems results in part from the small size of the typical process control computers in which monitoring or control systems are implemented. Because of space limitations within the computer system, the programs which accept directions from the systems engineer as to how a system or process is to be configured necessarily have to be kept relatively simple and compact. It is necessary for these programs to run on-line within the process control computer system because these programs require knowledge of where data values, variables, and signals are stored within the computer system. As a result of this limitation on program complexity, conventional fill-in-the-blank and other special programming systems are necessarily limited in their ability to accept sophisticated instructions or in their ability to interpret instructions written in a language which is meaningful to the engineer who is actually developing the system configuration and who may not be a skilled programmer.
The above-mentioned shortcomings of existing approaches to the structuring of operating production and other systems or processes and their computer monitoring/control systems become most apparent when one considers the actual way in which an elaborate system might be established. If a system is being configured for the first time, one or more systems engineers and management personnel typically make a fundamental analysis of the sytem to determine what it is the sytem should do and what apparatus items will be needed. Next, with an understanding of the characteristic behavior of the apparatus, the system operation, and of the controllable elements in the system, a determination typically is made of which variables are to be defined for monitoring or for control purposes and of which variables, if any, are to be intermediately or end controlled for the purpose of achieving the performance standards defined as a result of the basic system analysis. Functional flowcharts and other documentary records may be used at this stage to define how variables in the process are to be monitored and/or controlled.
After completion of the initial systems engineering, the sensing elements and the controlled elements, if any, of the system apparatus are interfaced with a process control computer system. Particular terminals at the input and output of the computer system are associated with each sensor and with each controlled element. The physical construction of the monitoring or control system is then complete.
It is next necessary to program the process control computer system so as to carry out the desired monitoring task and to implement the desired control functions. To the extent that fill-in-the-blank program techniques may be used, the system design engineer is able to write out on programming forms definitions of monitoring and control jobs which he wishes to have implemented, using the above-mentioned functional flowcharts as a guide.
With the assistance of a skilled computer programmer, the systems engineer may also generate additional computer programs for performing more sophisticated jobs which cannot easily be handled by fill-in-the-blank programming. Care must be taken to see that the necessary linkages between programs and between coding-form-defined job definitions are established, and all such linkages are of necessity established manually. When all job definitions have been prepared, the computer programs and the data from the coding forms are fed into the operating computer system at one time and are arranged into an operating monitoring and/or control configuration.
Up to this point, existing techniques for programming process control computers do an acceptably good job of implementing the system. Interaction between conventionally programmed and automatically programmed portions of the system software is limited in the manner previously noted, but generally any desired system configuration may ultimately be achieved in this manner, albeit at considerable expense.
It is during the debugging, troubleshooting, and modification stages of system implementation that the shortcomings of existing systems become most noticeable. In any complex system, unanticipated changes typically have to be introduced before an operating configuration is finalized. Conventional systems handle minor changes, such as changes in the magnitudes of constant values, of alarm limits, of controller parameters, or of setpoints, in a relatively satisfactory fashion.
More serious changes, such as a change in control strategy or a change in the way in which the execution of monitor task and control tasks are synchronized and coordinated, are difficult to implement in such a conventional system. Inter-program linkages are especially difficult to locate and to alter after an operating configuration is established. The cost, in time and in effort, of eliminating linkages which are no longer serving a useful purpose is often so great that such linkages are simply left as permanent scars within an operating system. Scars of this type occupy valuable storage space which could be profitably used for the storage of operating programs.
If major changes have to be made in a system operating configuration, the interactions and linkages between system elements can grow and become so complicated that only the programmer who has supervised the making of the changes can ever fully understand the nature of these linkages. Adequate records of system linkages are essential if some party other than this programmer is ever to be enabled to make further modifications to the operating system. Unfortunately, most programmers maintain only a very sketchy documentation of the systems upon which they work, and it is common for a programmer to use shorthand notations which are unintelligible to anyone other than himself.
Even in the case of well documented systems, it can often take so long for an outsider to come to a full understanding of a system that the engineers and programmers who initially implemented the system have to be called back again and again to make modifications. If some of these engineers and programmers leave the employ of the company which is implementing the system, it can be extremely costly to train their replacements, and it may be impossible for a new party ever to fully understand the system. It is not uncommon for programmers to be called back at great expense by their former employers to modify a system configuration which no one else can understand.
Modifications to a monitoring or control system can even become so expensive that they are simply not implemented, and non-optimal operating configurations are then tolerated because of the high cost of making modifications. In cases where changes absolutely have to be made, it is sometimes necessary to scrap entire segments of programming for a system and to replace these segments with entirely new programming segments simply because it is cheaper and faster to rewrite the programming in its entirety than to modify the existing programming to work in accordance with a modified plan of system operations.
The described characteristics of the known existing art on automated systems or processes and their monitoring and/or control digital computer systems have limited the economy and efficiency with which such systems can be established, the degree to which automation can be injected into the computer programming and system configuring process, and the flexibility with which system operations can be established and modified. Accordingly, these and other prior art limitations provide a background from which substantial opportunity exists for improvement.
No representation is made that the background art considered herein is the best art nor that alternative interpretations cannot be placed on the prior art.